package partida
{
	// ========================================================================
	import flash.system.System;
	
	import kapi.API;
	// ========================================================================

	public class Partida
	{
		// ====================================================================
		private var estado:Estado
		// ====================================================================

		// ====================================================================
		// CONSTRUCTOR
		// ====================================================================

		// --------------------------------------------------------------------
		public function Partida()
		{
			API.calidadMejorada()
			//API.pantallaCompleta()
		}

		// ====================================================================
		// FUNCIONES
		// ====================================================================

		// --------------------------------------------------------------------
		private function establecerEstado(nuevo:Estado):void
		{
			if (estado)
				estado.salir()
			API.stage.focus = null
			estado = nuevo
			estado.entrar(this)
		}

		// --------------------------------------------------------------------
		public function mostrarMenu():void
		{
			if (estado != null && estado.nombre == EstadosDeLaPartida.MENU.nombre)
				throw new Error('Ya se esta mostrando el menu')
			establecerEstado(EstadosDeLaPartida.MENU)
		}
		// --------------------------------------------------------------------
		public function jugar():void
		{
			if (estado != null && estado.nombre == EstadosDeLaPartida.JUEGO.nombre)
				throw new Error('Ya se esta jugando')
			establecerEstado(EstadosDeLaPartida.JUEGO)
		}
		// --------------------------------------------------------------------
		public function mostrarCreditos():void
		{
			if (estado != null && estado.nombre == EstadosDeLaPartida.CREDITOS.nombre)
				throw new Error('Ya se estan mostrando los creditos')
			establecerEstado(EstadosDeLaPartida.CREDITOS)
		}
		// --------------------------------------------------------------------
		public function salir():void
		{
			estado = null
			System.exit(0)
		}
	}
}